package com.itcoon.transform.assemble.assembler.inter;

import com.itcoon.transform.base.definition.InjectDefinition;
import com.itcoon.transform.base.pool.AssembleBeanHolder;

import java.lang.reflect.Method;
import java.util.List;

public interface MethodAssembler {
    static final AssembleBeanHolder BEAN_HOLDER = AssembleBeanHolder.getInstance();

    boolean support(Class<?> targetClass,Object source, Method method);


    <T, R> Object assemble(T source, Class<R> targetClass, Object proxy, Method method, List<InjectDefinition.InjectInfo> injectInfos, Object[] args) throws Exception;
}
